home *** CD-ROM | disk | FTP | other *** search
/ PC-Blue - MS DOS Public Domain Library / PC-Blue MS-DOS Public Domain Library - NYACC.iso / vol151 / dipset.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1986-12-16  |  7.2 KB  |  172 lines

  1. 10  REM Program by: Steve Dorr
  2. 15  REM Original Systat program by; Crisp
  3. 17  REM Display mods. by P. Feldmann (MCI 248-9063)
  4. 20  REM refrence; "CONFIG.BAS" by; Peter G. Wohlmut
  5. 30  REM           "POKEPEEK.DOC"   auther unknown
  6. 40  REM ***** see "I/O ADDRESS MAP" in the technical reference manual *****
  7. 45  DEFDBL E
  8. 47  DIM SW$(2,8)
  9. 48  UP$= "_"
  10. 49  DOWN$= "\"
  11. 50  CLS:KEY OFF:DEF SEG:POKE &H5C,25
  12. 55  GOTO 1000
  13. 57  CLS
  14. 60  TEMP=INP(&H61)
  15. 70  REM ***** turn off keyboard and read switches
  16. 80  OUT &H61,&HC8
  17. 90  SW1=INP(&H60)
  18. 100  SW2H=(INP(&H62) AND &HF)
  19. 110  REM ***** turn keyboard back on
  20. 120  OUT &H61,TEMP
  21. 130  SW2L=(INP(&H62) AND &HF)
  22. 140  SW2=16*SW2H+SW2L
  23. 150  REM ***** draw and label switches
  24. 160  LOCATE 1,21:PRINT "       SW1                 SW2       "
  25. 170  LOCATE 2,21:PRINT "ZDRDRDRDRDRDRDRD?   ZDRDRDRDRDRDRDRD?"
  26. 180  LOCATE 3,21:PRINT "3 : : : : : : : 3on 3 : : : : : : : 3"
  27. 190  LOCATE 4,21:PRINT "3 : : : : : : : 3   3 : : : : : : : 3"
  28. 200  LOCATE 5,21:PRINT "@DPDPDPDPDPDPDPDY   @DPDPDPDPDPDPDPDY"
  29. 210  LOCATE 6,21:PRINT " 1 2 3 4 5 6 7 8     1 2 3 4 5 6 7 8 "
  30. 220  LOCATE 3,40:PRINT CHR$(24)
  31. 230  REM ***** draw switch status
  32. 240  FOR I=0 TO 7
  33. 250  IF (SW1 AND 2^I)/2^I=1 THEN 270
  34. 260  LOCATE 3,I*2+22:COLOR 12:PRINT "_":COLOR 7:GOTO 280
  35. 270  LOCATE 4,I*2+22:COLOR 12:PRINT "\":COLOR 7
  36. 280  IF (SW2 AND 2^I)/2^I=1 THEN 300
  37. 290  LOCATE 3,I*2+42:COLOR 12:PRINT "_":COLOR 7:GOTO 310
  38. 300  LOCATE 4,I*2+42:COLOR 12:PRINT "\":COLOR 7
  39. 310  NEXT I
  40. 320  REM ***** find status in ram
  41. 330  DEF SEG=&H40
  42. 340  REM ***** memory size
  43. 350  TOTMEM=256*PEEK(&H14)+PEEK(&H13)
  44. 360  IOMEM=256*PEEK(&H16)+PEEK(&H15)
  45. 370  REM ***** equipment flags (bits 1,8,13 not used)
  46. 380  EQUIPFLAG=256*PEEK(&H11)+PEEK(&H10)
  47. 386  PARALLEL=0
  48. 388  IF EQUIPFLAG>16383 THEN EQUIPFLAG=EQUIPFLAG-16384:PARALLEL=PARALLEL+1:GOTO 388
  49. 390  SYSBRDMEM=((EQUIPFLAG AND 2^3+2^2)/2^2+1)*16
  50. 400  IF (EQUIPFLAG AND 2^0)=0 THEN DISKS=0:GOTO 420
  51. 410  DISKS=(EQUIPFLAG AND 2^7+2^6)/2^6+1
  52. 420  VI=(EQUIPFLAG AND 2^5+2^4)/2^4
  53. 430  IF VI=0 THEN VIDINIT$="No graphics card set"
  54. 440  IF VI=1 THEN VIDINIT$="40x25 Color card"
  55. 450  IF VI=2 THEN VIDINIT$="80x25 Color card"
  56. 460  IF VI=3 THEN VIDINIT$="80x25 Mono card"
  57. 470  SERIAL=(EQUIPFLAG AND 2^11+2^10+2^9)/2^9
  58. 480  IF (EQUIPFLAG AND 2^12)=2^12 THEN GAME$="YES" ELSE GAME$="NO"
  59. 490  TB$=CHR$(9)
  60. 500  REM ***** print status from ram
  61. 510  LOCATE 8,28:PRINT "Status according to RAM":PRINT
  62. 520  PRINT TB$;"Total Memory",TOTMEM;"Kbytes",TB$;"Disk drives     ";DISKS
  63. 530  PRINT TB$;"I/O Memory",IOMEM;"Kbytes",TB$;"Parallel ports  ";PARALLEL
  64. 540  PRINT TB$;"Sys Brd Mem",SYSBRDMEM;"Kbytes",TB$;"Serial ports    ";SERIAL
  65. 550  PRINT TB$;"Video def",VIDINIT$;TB$;"Game adapter     ";GAME$
  66. 560  REM ***** find keyboard status
  67. 570  INSERTTGL=(PEEK(&H17) AND &H80)/&H80
  68. 580  CAPLCKTGL=(PEEK(&H17) AND &H40)/&H40
  69. 590  NUMLCKTGL=(PEEK(&H17) AND &H20)/&H20
  70. 600  SCRLCKTGL=(PEEK(&H17) AND &H10)/&H10
  71. 610  ALTERN=(PEEK(&H17) AND &H8)/&H8
  72. 620  CONTRL=(PEEK(&H17) AND &H4)/&H4
  73. 630  LFTSFT=(PEEK(&H17) AND &H2)/&H2
  74. 640  RGTSFT=(PEEK(&H17) AND &H1)/&H1
  75. 650  REM ***** print keyboard status
  76. 660  LOCATE 15,1,0
  77. 670  PRINT TB$;"Insert mode",INSERTTGL;TAB(40);"Alternate",ALTERN
  78. 680  PRINT TB$;"Caps lock",CAPLCKTGL;TAB(40);"Control",CONTRL
  79. 690  PRINT TB$;"Number lock",NUMLCKTGL;TAB(40);"Left shift",LFTSFT
  80. 700  PRINT TB$;"Scroll lock",SCRLCKTGL;TAB(40);"Right shift",RGTSFT
  81. 710  PRINT:PRINT:PRINT:PRINT TAB(30);"press  ESC  to end"
  82. 720  IF INKEY$=CHR$(27) THEN RETURN ELSE 560
  83. 730  REM ***** RS232 and Printer address's
  84. 740  FOR I=1 TO 4:J=I*2-1
  85. 750  SERIAL$(I)=HEX$(PEEK(J))+HEX$(PEEK(J-1))
  86. 760  PRINTR$(I)=HEX$(PEEK(J+8))+HEX$(PEEK(J+7))
  87. 770  NEXT I
  88. 780  REM ***** current video mode
  89. 790  CV=PEEK(&H49)
  90. 800  IF CV=0 THEN CV$="40x25 BW"
  91. 810  IF CV=1 THEN CV$="40x25 Color"
  92. 820  IF CV=2 THEN CV$="80x25 BW"
  93. 830  IF CV=3 THEN CV$="80x25 Color"
  94. 840  IF CV=4 THEN CV$="320x200 Color"
  95. 850  IF CV=5 THEN CV$="320x200 BW"
  96. 1000  CLS:KEY OFF:LOCATE 9,19,0:PRINT "Review/Set DIP Switches for IBM-PC or COMPAQ"
  97. 1010  PRINT:PRINT TAB(22);" 1.  View current DIP switch settings.":PRINT
  98. 1020  PRINT TAB(22);" 2.  Configure DIP switch settings.":PRINT
  99. 1030  PRINT TAB(22);" 3.  Exit to DOS."
  100. 1040  PRINT:PRINT:PRINT TAB(32);"[Enter option]";:O=VAL(INPUT$(1)):IF (O <>1) AND (O<>2) AND (O<>3) THEN 1000
  101. 1050  ON O GOSUB 57,2000,3000
  102. 1060  GOTO 1000
  103. 2000  CLS:PRINT"THIS PROGRAM WILL ASK YOU HOW YOU WANT YOUR COMPUTER TO BE"
  104. 2010  PRINT:PRINT"SET UP AND THEN WILL ISSUE THE PROPER DIP SWITCH SETTINGS"
  105. 2020  PRINT:PRINT"FOR THE SYSTEM MOTHERBOARD."
  106. 2030  PRINT:PRINT"HOW MANY FLOPPY DISK DRIVES ARE THERE";:INPUT DISK
  107. 2040  IF DISK ><INT(DISK) THEN PRINT "ERROR...YOU MUST INPUT A WHOLE NUMBER":LOCATE 6,1:GOTO 2030
  108. 2050  IF DISK >4 OR DISK <0 THEN PRINT "ERROR...DISK RANGE 0..4                  ":LOCATE 6,1:GOTO 2030
  109. 2060  PRINT"                                                 ":PRINT"HOW MUCH MEMORY IN K IS THERE";:INPUT MEM
  110. 2070  IF MEM<> INT(MEM/64)*64 THEN PRINT"ERROR...MEMORY MUST BE IN 64K INCREMENTS":LOCATE 8,1:GOTO 2060
  111. 2080  IF MEM <64 OR MEM >640 THEN PRINT"ERROR...MEMORY RANGE 64...640K                  ":LOCATE 8,1:GOTO 2060
  112. 2090  PRINT"                                                 ":PRINT"WHAT TYPE OF MONITOR DO YOU HAVE:"
  113. 2100  PRINT"   1.  NO DISPLAY"
  114. 2110  PRINT"   2.  MONOCHROME 80 x 25"
  115. 2120  PRINT"   3.  GRAPHICS   40 x 25"
  116. 2130  PRINT"   4.  GRAPHICS   80 x 25"
  117. 2140  INPUT MONITOR
  118. 2150  IF MONITOR <1 OR MONITOR >4 OR MONITOR <>INT(MONITOR) THEN LOCATE 10,1:GOTO 2090
  119. 2160  PRINT"                                                  ":PRINT "DO YOU HAVE AN 8087 CHIP INSTALLED(1-YES,2-NO)";:INPUT CHIP
  120. 2170  IF CHIP <>1 AND CHIP <>2 THEN LOCATE 17,1:GOTO 2160
  121. 2180  CLS
  122. 2200  LOCATE 1,12:PRINT "       SW1                 SW2       "
  123. 2210  LOCATE 2,12:PRINT "ZDRDRDRDRDRDRDRD?   ZDRDRDRDRDRDRDRD?"
  124. 2220  LOCATE 3,12:PRINT "3 : : : : : : : 3on 3 : : : : : : : 3"
  125. 2230  LOCATE 4,12:PRINT "3 : : : : : : : 3   3 : : : : : : : 3"
  126. 2240  LOCATE 5,12:PRINT "@DPDPDPDPDPDPDPDY   @DPDPDPDPDPDPDPDY"
  127. 2250  LOCATE 6,12:PRINT " 1 2 3 4 5 6 7 8     1 2 3 4 5 6 7 8 "
  128. 2260  LOCATE 3,31:PRINT CHR$(24)
  129. 2290  LOCATE 10,1
  130. 2300  PRINT:PRINT"# of floppy disk drives: ";DISK
  131. 2310  ON DISK+1 GOSUB 4000,4100,4200,4300,4400
  132. 2315  PRINT"Monitor:  ";
  133. 2320  IF CHIP = 1 THEN SW$(1,2)=DOWN$ ELSE SW$(1,2) = UP$
  134. 2330  ON MONITOR GOSUB 4500,4600,4700,4800
  135. 2340  PRINT "Memory installed:";MEM
  136. 2350  IF CHIP =2 THEN PRINT"No ";
  137. 2360  PRINT "8087 chip installed"
  138. 2380  ON MEM/64 GOSUB 5000,5010,5020,5030,5040,5050,5060,5070,5080,5090
  139. 2800  FOR I=0 TO 7:
  140. 2810  IF SW$(1,I+1)=UP$ THEN LOCATE 3,I*2+13:PRINT UP$;
  141. 2820  IF SW$(1,I+1)=DOWN$ THEN LOCATE 4,I*2+13:PRINT DOWN$;
  142. 2830  NEXT I
  143. 2840  SW$(2,6)=DOWN$:SW$(2,7)=DOWN$:SW$(2,8)=DOWN$
  144. 2850  FOR I=0 TO 7:
  145. 2860  IF SW$(2,I+1)=UP$ THEN LOCATE 3,I*2+33:PRINT UP$;
  146. 2870  IF SW$(2,I+1)=DOWN$ THEN LOCATE 4,I*2+33:PRINT DOWN$;
  147. 2880  NEXT I
  148. 2940  LOCATE 22,1
  149. 2950  PRINT:PRINT "press ESC to end"
  150. 2960  IF INKEY$=CHR$(27) THEN RETURN ELSE 2960
  151. 2999  RETURN
  152. 3000  CLS:SYSTEM
  153. 4000  SW$(1,1)=UP$  :SW$(1,7)=UP$  :SW$(1,8)=UP$:RETURN
  154. 4100  SW$(1,1)=DOWN$:SW$(1,7)=UP$  :SW$(1,8)=UP$:RETURN
  155. 4200  SW$(1,1)=DOWN$:SW$(1,7)=DOWN$:SW$(1,8)=UP$:RETURN
  156. 4300  SW$(1,1)=DOWN$:SW$(1,7)=UP$  :SW$(1,8)=DOWN$:RETURN
  157. 4400  SW$(1,1)=DOWN$:SW$(1,7)=DOWN$:SW$(1,8)=DOWN$:RETURN
  158. 4500  SW$(1,5)=UP$  :SW$(1,6)=UP$  :PRINT"NO DISPLAY":RETURN
  159. 4600  SW$(1,5)=DOWN$:SW$(1,6)=DOWN$:PRINT"MONOCHROME 80 x 25":RETURN
  160. 4700  SW$(1,5)=DOWN$:SW$(1,6)=UP$  :PRINT"GRAPHICS 40 x 25":RETURN
  161. 4800  SW$(1,5)=UP$  :SW$(1,6)=DOWN$:PRINT"GRAPHICS 80 x 25":RETURN
  162. 5000  SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$  :SW$(2,2)=UP$  :SW$(2,3)=UP$  : SW$(2,4)=UP$  :SW$(2,5)=UP$ :RETURN
  163. 5010  SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$  :SW$(2,2)=DOWN$:SW$(2,3)=UP$  : SW$(2,4)=UP$  :SW$(2,5)=UP$ :RETURN
  164. 5020  SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$  :SW$(2,2)=UP$  :SW$(2,3)=DOWN$: SW$(2,4)=UP$  :SW$(2,5)=UP$ :RETURN
  165. 5030  SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$  :SW$(2,2)=DOWN$:SW$(2,3)=DOWN$: SW$(2,4)=UP$  :SW$(2,5)=UP$ :RETURN
  166. 5040  SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$  :SW$(2,2)=UP$  :SW$(2,3)=UP$  : SW$(2,4)=DOWN$:SW$(2,5)=UP$ :RETURN
  167. 5050  SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$  :SW$(2,2)=DOWN$:SW$(2,3)=UP$  : SW$(2,4)=DOWN$:SW$(2,5)=UP$ :RETURN
  168. 5060  SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$  :SW$(2,2)=UP$  :SW$(2,3)=DOWN$: SW$(2,4)=DOWN$:SW$(2,5)=UP$ :RETURN
  169. 5070  SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$  :SW$(2,2)=DOWN$:SW$(2,3)=DOWN$: SW$(2,4)=DOWN$:SW$(2,5)=UP$ :RETURN
  170. 5080  SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$  :SW$(2,2)=UP$  :SW$(2,3)=UP$  : SW$(2,4)=UP$  :SW$(2,5)=DOWN$ :RETURN
  171. 5090  SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$  :SW$(2,2)=DOWN$:SW$(2,3)=UP$  : SW$(2,4)=UP$  :SW$(2,5)=DOWN$ :RETURN
  172.